+ -- We need to give a name to the new top-level binding that
+ -- is *stable* (i.e. the compiler won't change it later),
+ -- because this name will be referred to by the C code stub.
+ -- Furthermore, the name must be unique (see #1533). If the
+ -- same function is foreign-exported multiple times, the
+ -- top-level bindings generated must not have the same name.
+ -- Hence we create an External name (doesn't change), and we
+ -- append a Unique to the string right here.
+ uniq_str = showSDoc (pprUnique uniq)
+ occ = mkVarOcc (occNameString (getOccName nm) ++ '_' : uniq_str)
+ gnm = mkExternalName uniq mod (mkForeignExportOcc occ) loc