[LLVMdev] \1 Mangled Names

Charles Davis cdavis5x at gmail.com
Tue Dec 4 21:13:43 PST 2012

On Dec 4, 2012, at 9:49 PM, Meador Inge wrote:

> Hi All,
> I am doing some work to extend the target library information and ran across some function
> names in the old simplify-libcalls pass that are prefixed with \1.  For example:
>  \1__isoc99_scanf
>  \1__isoc99_sscan
>  \1fopen64
>  \1fseeko64
>  \1fstat64
>  \1fstatvfs64
> Where do these \1 names come from?
That's a marker that means "don't mangle this name". It's what clang uses to implement the asm() naming extension, e.g.

FILE *fopen(const char *, const char *) asm("fopen64");

where calls to fopen(3) get redirected to a symbol named fopen64 instead.
> What target triples are they expected on?
These particular names pop up in code compiled against glibc (i.e. on *-linux-gnu and *-kfreebsd-gnu), which uses the extension under certain circumstances (e.g. when large-file support is on).


More information about the llvm-dev mailing list