On 02/04/2013 10:33 PM, David Edelsohn wrote: > 2013-02-04 Michael Haubenwallner <michael.haubenwall...@salomon.at> > > Accept all flags that enable aix runtime linking to change the > library search order. Also there is a disabling flag.
> This patch is okay, and I agree that it should use strncmp. Updated to use strcmp/strncmp. While at it, also check for "-bexport:" instead of "-bexport", as this (and "-bE:") always needs the filename anyway. > Do you have SVN write access? Nope. Thank you! /haubi/
2013-02-05 Michael Haubenwallner <michael.haubenwall...@salomon.at> Accept all flags that enable aix runtime linking to change the library search order. Also there is a disabling flag. * collect2.c (aixrtl_flag): Enabled by -G and -bsvr4 too, disabled by -bnortl. Use strcmp,strncmp for all these aix flags too. And -bexport always needs the filename, so test for '-bexport:'. --- gcc/collect2.c | 28 ++++++++++++++-------------- 1 files changed, 14 insertions(+), 14 deletions(-) diff --git a/gcc/collect2.c b/gcc/collect2.c index 0db908f..99dd41d 100644 --- a/gcc/collect2.c +++ b/gcc/collect2.c @@ -1022,20 +1022,20 @@ main (int argc, char **argv) selected_linker = USE_GOLD_LD; #ifdef COLLECT_EXPORT_LIST - /* since -brtl, -bexport, -b64 are not position dependent - also check for them here */ - if ((argv[i][0] == '-') && (argv[i][1] == 'b')) - { - arg = argv[i]; - /* We want to disable automatic exports on AIX when user - explicitly puts an export list in command line */ - if (arg[2] == 'E' || strncmp (&arg[2], "export", 6) == 0) - export_flag = 1; - else if (arg[2] == '6' && arg[3] == '4') - aix64_flag = 1; - else if (arg[2] == 'r' && arg[3] == 't' && arg[4] == 'l') - aixrtl_flag = 1; - } + /* These flags are position independent, although their order + is important - subsequent flags override earlier ones. */ + else if (strcmp (argv[i], "-b64") == 0) + aix64_flag = 1; + /* -bexport:filename always needs the :filename */ + else if (strncmp (argv[i], "-bE:", 4) == 0 + || strncmp (argv[i], "-bexport:", 9) == 0) + export_flag = 1; + else if (strcmp (argv[i], "-brtl") == 0 + || strcmp (argv[i], "-bsvr4") == 0 + || strcmp (argv[i], "-G") == 0) + aixrtl_flag = 1; + else if (strcmp (argv[i], "-bnortl") == 0) + aixrtl_flag = 0; #endif } vflag = debug; -- 1.7.3.4