diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 8c8825aed0ca0ab74941fadf4933565335cc9801..f323db25c7b6433fa5e6e1270e654c04a6629311 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,9 @@
+2003-08-19  Andrew Pinski  <pinskia@physics.uc.edu>
+
+	* config/i386/i386.c (legitimate_pic_address_disp_p): Change the
+	strstr with $pb to a strcompare with "<pic base>"
+	(ix86_output_addr_diff_elt): Output the real pic base.
+
 2003-08-19  Gabriel Dos Reis  <gdr@integrable-solutions.net>
 
 	* langhooks-def.h (LANG_HOOKS_INITIALIZE_DIAGNOSTICS): Fix spelling.
diff --git a/gcc/config/i386/i386.c b/gcc/config/i386/i386.c
index db404f07b10dcfcaa1c13d2107c0eacffce4144d..3cba33a14b1f47b448d3a2c6ae869311003001e0 100644
--- a/gcc/config/i386/i386.c
+++ b/gcc/config/i386/i386.c
@@ -5715,7 +5715,7 @@ legitimate_pic_address_disp_p (register rtx disp)
         if (GET_CODE (XEXP (disp, 1)) == SYMBOL_REF)
           {
             const char *sym_name = XSTR (XEXP (disp, 1), 0);
-            if (strstr (sym_name, "$pb") != 0)
+            if (! strcmp (sym_name, "<pic base>"))
               return 1;
           }
     }
@@ -8027,8 +8027,11 @@ ix86_output_addr_diff_elt (FILE *file, int value, int rel)
     fprintf (file, "%s%s%d@GOTOFF\n", ASM_LONG, LPREFIX, value);
 #if TARGET_MACHO
   else if (TARGET_MACHO)
-    fprintf (file, "%s%s%d-%s\n", ASM_LONG, LPREFIX, value,
-	     machopic_function_base_name () + 1);
+    {
+      fprintf (file, "%s%s%d-", ASM_LONG, LPREFIX, value);
+      machopic_output_function_base_name (file);
+      fprintf(file, "\n");
+    }
 #endif
   else
     asm_fprintf (file, "%s%U%s+[.-%s%d]\n",