@@ -358,6 +358,7 @@ static void arg_format_suppress_utf8(void);
358
358
static void arg_format_file (void );
359
359
static void arg_format_gcc (void );
360
360
static void arg_format_groupnumber (void );
361
+ static void arg_format_universalnumber (void );
361
362
static void arg_format_limit (void );
362
363
static void arg_format_producer (void );
363
364
static void arg_format_snc (void );
@@ -596,6 +597,10 @@ static const char *usage_long_text[] = {
596
597
"-u<file> --format-file=<file> Print only specified file (CU name)" ,
597
598
"-x groupnumber=<n> " ,
598
599
" --format-group-number=<n> Groupnumber to print" ,
600
+ "-x universalnumber=<n> " ,
601
+ " --format-universalnumber=<n> Groupnumber to print" ,
602
+ " non-zero only applies to" ,
603
+ " Mach-O universal binaries." ,
599
604
"-H<num> --format-limit=<num> Limit output to the first <num>" ,
600
605
" major units." ,
601
606
" Stop after <num> compilation units" ,
@@ -739,11 +744,16 @@ OPT_FORMAT_SUPPRESS_URI, /* -U --format-suppress-uri */
739
744
OPT_FORMAT_SUPPRESS_URI_MSG , /* -q --format-suppress-uri-msg */
740
745
741
746
OPT_FORMAT_SUPPRESS_UTF8 , /* --format-suppress-utf8 */
747
+ OPT_FORMAT_UNIVERSALNUMBER , /* --format-universalnumber */
742
748
743
749
/* Print Output Limiters */
744
750
OPT_FORMAT_FILE , /* -u<file> --format-file=<file> */
745
751
OPT_FORMAT_GCC , /* -cg --format-gcc */
746
752
OPT_FORMAT_GROUP_NUMBER , /* -x<n> --format-group-number=<n>*/
753
+
754
+ /* -x<n> --format-universalnumber=<n>*/
755
+ OPT_FORMAT_GROUP_UNIVERSALNUMBER ,
756
+
747
757
OPT_FORMAT_LIMIT , /* -H<num> --format-limit=<num> */
748
758
OPT_FORMAT_PRODUCER , /* -c<str> --format-producer=<str> */
749
759
OPT_FORMAT_SNC , /* -cs --format-snc */
@@ -893,6 +903,8 @@ OPT_FORMAT_SUPPRESS_OFFSETS },
893
903
{"format-gcc" , dwno_argument , 0 , OPT_FORMAT_GCC },
894
904
{"format-group-number" , dwrequired_argument , 0 ,
895
905
OPT_FORMAT_GROUP_NUMBER },
906
+ {"format-universalnumber" , dwrequired_argument , 0 ,
907
+ OPT_FORMAT_UNIVERSALNUMBER },
896
908
{"format-limit" , dwrequired_argument , 0 , OPT_FORMAT_LIMIT },
897
909
{"format-producer" , dwrequired_argument , 0 , OPT_FORMAT_PRODUCER },
898
910
{"format-snc" , dwno_argument , 0 , OPT_FORMAT_SNC },
@@ -2148,6 +2160,9 @@ void arg_x_multiple_selection(void)
2148
2160
} else if (strncmp (dwoptarg ,"groupnumber=" ,12 ) == 0 ) {
2149
2161
dwoptarg = & dwoptarg [12 ];
2150
2162
arg_format_groupnumber ();
2163
+ } else if (strncmp (dwoptarg ,"universalnumber=" ,16 ) == 0 ) {
2164
+ dwoptarg = & dwoptarg [12 ];
2165
+ arg_format_universalnumber ();
2151
2166
} else if (strncmp (dwoptarg ,"tied=" ,5 ) == 0 ) {
2152
2167
dwoptarg = & dwoptarg [5 ];
2153
2168
arg_file_tied ();
@@ -2187,6 +2202,32 @@ arg_file_abi(void)
2187
2202
}
2188
2203
}
2189
2204
2205
+ /* Option '-x universalnumber='
2206
+ greater than zero only applies to Mach-O universal
2207
+ object files*/
2208
+ static void
2209
+ arg_format_universalnumber (void )
2210
+ {
2211
+ /* By default prints the lowest universal number in the object.
2212
+ Default is -x universalnumber=0 */
2213
+
2214
+ long int gnum = 0 ;
2215
+ int res = 0 ;
2216
+
2217
+ if (!dwoptarg || !dwoptarg [0 ]) {
2218
+ printf ("ERROR *groupnumber= does not allow an empty text\n" );
2219
+ glflags .gf_count_major_errors ++ ;
2220
+ arg_usage_error = TRUE;
2221
+ return ;
2222
+ }
2223
+ res = get_number_value (dwoptarg ,& gnum );
2224
+ if (res == DW_DLV_OK && gnum >= 0 ) {
2225
+ glflags .gf_universalnumber = gnum ;
2226
+ } else {
2227
+ arg_x_invalid ();
2228
+ }
2229
+ }
2230
+
2190
2231
/* Option '-x groupnumber=' */
2191
2232
static void
2192
2233
arg_format_groupnumber (void )
@@ -2510,6 +2551,8 @@ set_command_options(int argc, char *argv[])
2510
2551
case OPT_FORMAT_FILE : arg_format_file (); break ;
2511
2552
case OPT_FORMAT_GCC : arg_format_gcc (); break ;
2512
2553
case OPT_FORMAT_GROUP_NUMBER : arg_format_groupnumber (); break ;
2554
+ case OPT_FORMAT_UNIVERSALNUMBER : arg_format_universalnumber ();
2555
+ break ;
2513
2556
case OPT_FORMAT_LIMIT : arg_format_limit (); break ;
2514
2557
case OPT_FORMAT_PRODUCER : arg_format_producer (); break ;
2515
2558
case OPT_FORMAT_SNC : arg_format_snc (); break ;
0 commit comments