diff -up ksh-20120801/src/lib/libast/string/strdup.c.badgcc ksh-20120801/src/lib/libast/string/strdup.c --- ksh-20120801/src/lib/libast/string/strdup.c.badgcc 2012-05-21 15:04:46.000000000 +0200 +++ ksh-20120801/src/lib/libast/string/strdup.c 2015-06-17 10:12:52.693922581 +0200 @@ -50,11 +50,18 @@ __STDPP__directive pragma pp:nohide strd #define extern __EXPORT__ #endif +#pragma GCC push_options +#pragma GCC optimize ("O0") + + extern char* strdup(register const char* s) { register char* t; register int n; return (s && (t = oldof(0, char, n = strlen(s) + 1, 0))) ? (char*)memcpy(t, s, n) : (char*)0; } + +#pragma GCC pop_options +