Index: contrib/elftoolchain/elfcopy/elfcopy.h =================================================================== --- contrib/elftoolchain/elfcopy/elfcopy.h +++ contrib/elftoolchain/elfcopy/elfcopy.h @@ -47,6 +47,7 @@ #define SYMOP_KEEPG 0x0010U #define SYMOP_WEAKEN 0x0020U #define SYMOP_REDEF 0x0040U +#define SYMOP_HIDE 0x0080U unsigned int op; Index: contrib/elftoolchain/elfcopy/main.c =================================================================== --- contrib/elftoolchain/elfcopy/main.c +++ contrib/elftoolchain/elfcopy/main.c @@ -54,6 +54,8 @@ ECP_GAP_FILL, ECP_GLOBALIZE_SYMBOL, ECP_GLOBALIZE_SYMBOLS, + ECP_HIDE_SYMBOL, + ECP_HIDE_SYMBOLS, ECP_KEEP_SYMBOLS, ECP_KEEP_GLOBAL_SYMBOLS, ECP_LOCALIZE_HIDDEN, @@ -131,6 +133,8 @@ {"globalize-symbol", required_argument, NULL, ECP_GLOBALIZE_SYMBOL}, {"globalize-symbols", required_argument, NULL, ECP_GLOBALIZE_SYMBOLS}, {"help", no_argument, NULL, 'h'}, + {"hide-symbol", required_argument, NULL, ECP_HIDE_SYMBOL}, + {"hide-symbols", required_argument, NULL, ECP_HIDE_SYMBOLS}, {"input-target", required_argument, NULL, 'I'}, {"keep-symbol", required_argument, NULL, 'K'}, {"keep-symbols", required_argument, NULL, ECP_KEEP_SYMBOLS}, @@ -909,6 +913,12 @@ case ECP_GLOBALIZE_SYMBOLS: parse_symlist_file(ecp, optarg, SYMOP_GLOBALIZE); break; + case ECP_HIDE_SYMBOL: + add_to_symop_list(ecp, optarg, NULL, SYMOP_HIDE); + break; + case ECP_HIDE_SYMBOLS: + parse_symlist_file(ecp, optarg, SYMOP_HIDE); + break; case ECP_KEEP_SYMBOLS: parse_symlist_file(ecp, optarg, SYMOP_KEEP); break; Index: contrib/elftoolchain/elfcopy/symbols.c =================================================================== --- contrib/elftoolchain/elfcopy/symbols.c +++ contrib/elftoolchain/elfcopy/symbols.c @@ -552,6 +552,9 @@ GELF_ST_TYPE(sym.st_info)); /* XXX We should globalize weak symbol? */ } + if (!is_hidden_symbol(sym.st_other) && + lookup_symop_list(ecp, name, SYMOP_HIDE) != NULL) + sym.st_other = STV_HIDDEN; /* Check if we need to rename this symbol. */ if ((sp = lookup_symop_list(ecp, name, SYMOP_REDEF)) != NULL)