diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/arbits/output/slbt_ar_output_mapfile.c | 2 | ||||
-rw-r--r-- | src/arbits/output/slbt_ar_output_symbols.c | 2 | ||||
-rw-r--r-- | src/internal/slibtool_driver_impl.h | 1 | ||||
-rw-r--r-- | src/logic/slbt_exec_ar.c | 4 | ||||
-rw-r--r-- | src/skin/slbt_skin_ar.c | 6 |
5 files changed, 13 insertions, 2 deletions
diff --git a/src/arbits/output/slbt_ar_output_mapfile.c b/src/arbits/output/slbt_ar_output_mapfile.c index 3455c37..ab85394 100644 --- a/src/arbits/output/slbt_ar_output_mapfile.c +++ b/src/arbits/output/slbt_ar_output_mapfile.c @@ -27,7 +27,7 @@ static int slbt_ar_output_mapfile_impl( regex_t regctx; regmatch_t pmatch[2] = {0}; - fsort = true; + fsort = !(dctx->cctx->fmtflags & SLBT_OUTPUT_ARCHIVE_NOSORT); if (slbt_dprintf(fdout,"{\n" "\t" "global:\n") < 0) return SLBT_SYSTEM_ERROR(dctx,0); diff --git a/src/arbits/output/slbt_ar_output_symbols.c b/src/arbits/output/slbt_ar_output_symbols.c index 167de50..72dd3e0 100644 --- a/src/arbits/output/slbt_ar_output_symbols.c +++ b/src/arbits/output/slbt_ar_output_symbols.c @@ -33,7 +33,7 @@ static int slbt_ar_output_symbols_posix( regmatch_t pmatch[2] = {0}; fdout = fdctx->fdout; - fsort = true; + fsort = !(dctx->cctx->fmtflags & SLBT_OUTPUT_ARCHIVE_NOSORT); if (fsort && !mctx->mapstrv) if (slbt_update_mapstrv(dctx,mctx) < 0) diff --git a/src/internal/slibtool_driver_impl.h b/src/internal/slibtool_driver_impl.h index cf9742d..2fecb92 100644 --- a/src/internal/slibtool_driver_impl.h +++ b/src/internal/slibtool_driver_impl.h @@ -90,6 +90,7 @@ enum app_tags { TAG_AR_CHECK, TAG_AR_PRINT, TAG_AR_MAPFILE, + TAG_AR_NOSORT, TAG_AR_REGEX, TAG_AR_PRETTY, TAG_AR_POSIX, diff --git a/src/logic/slbt_exec_ar.c b/src/logic/slbt_exec_ar.c index 35c8380..ede3f72 100644 --- a/src/logic/slbt_exec_ar.c +++ b/src/logic/slbt_exec_ar.c @@ -243,6 +243,10 @@ int slbt_exec_ar( ictx->cctx.fmtflags |= SLBT_OUTPUT_ARCHIVE_MAPFILE; break; + case TAG_AR_NOSORT: + ictx->cctx.fmtflags |= SLBT_OUTPUT_ARCHIVE_NOSORT; + break; + case TAG_AR_REGEX: ictx->cctx.regex = entry->arg; break; diff --git a/src/skin/slbt_skin_ar.c b/src/skin/slbt_skin_ar.c index ccd986c..e0d87e4 100644 --- a/src/skin/slbt_skin_ar.c +++ b/src/skin/slbt_skin_ar.c @@ -50,6 +50,12 @@ const struct argv_option slbt_ar_options[] = { 0,"<regexp>", "filter armap symbols using the specified %s."}, + {"Wnosort", 0,TAG_AR_NOSORT,ARGV_OPTARG_NONE, + ARGV_OPTION_HYBRID_ONLY, + 0,0, + "do not sort the symbol list; " + "affect switches are -Wprint=symbols and -Wmapfile."}, + {"Wpretty", 0,TAG_AR_PRETTY,ARGV_OPTARG_REQUIRED, ARGV_OPTION_HYBRID_EQUAL, "posix|yaml|hexdata",0, |