summaryrefslogtreecommitdiff
path: root/gcc/config/darwin.c
diff options
context:
space:
mode:
authorshebs <shebs@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-04 20:58:19 +0000
committershebs <shebs@138bc75d-0d04-0410-961f-82ee72b054a4>2001-09-04 20:58:19 +0000
commitd10058249579c5f3dad6982353c8459ff585a5e6 (patch)
tree17cebf8a784d26dc867f2cc1eecac92a4975cb9e /gcc/config/darwin.c
parent8c5845924576f2fcdf955f299830454c290d5943 (diff)
downloadgcc-d10058249579c5f3dad6982353c8459ff585a5e6.tar.gz
* config/darwin.h (ASM_DECLARE_FUNCTION_NAME): Define.
* config/darwin.c (machopic_stub_name): Account for internally generated lib calls such as memcpy. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@45385 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/config/darwin.c')
-rw-r--r--gcc/config/darwin.c12
1 files changed, 10 insertions, 2 deletions
diff --git a/gcc/config/darwin.c b/gcc/config/darwin.c
index 3f8cffdd230..a46d46b7d5f 100644
--- a/gcc/config/darwin.c
+++ b/gcc/config/darwin.c
@@ -324,14 +324,22 @@ machopic_stub_name (name)
const char *name;
{
tree temp, ident = get_identifier (name);
-
+ const char *tname;
+
for (temp = machopic_stubs;
temp != NULL_TREE;
temp = TREE_CHAIN (temp))
{
if (ident == TREE_VALUE (temp))
return IDENTIFIER_POINTER (TREE_PURPOSE (temp));
- if (strcmp (name, IDENTIFIER_POINTER (TREE_VALUE (temp))) == 0)
+ tname = IDENTIFIER_POINTER (TREE_VALUE (temp));
+ if (strcmp (name, tname) == 0)
+ return IDENTIFIER_POINTER (TREE_PURPOSE (temp));
+ /* A library call name might not be section-encoded yet, so try
+ it against a stripped name. */
+ if (name[0] != '!'
+ && tname[0] == '!'
+ && strcmp (name, tname + 4) == 0)
return IDENTIFIER_POINTER (TREE_PURPOSE (temp));
}