Skip to Main Content
IBM Data and AI Ideas Portal for Customers


Shape the future of IBM!

We invite you to shape the future of IBM, including product roadmaps, by submitting ideas that matter to you the most. Here's how it works:

Post your ideas

Post ideas and requests to enhance a product or service. Take a look at ideas others have posted and upvote them if they matter to you,

  1. Post an idea

  2. Upvote ideas that matter most to you

  3. Get feedback from the IBM team to refine your idea

Help IBM prioritize your ideas and requests

The IBM team may need your help to refine the ideas so they may ask for more information or feedback. The product management team will then decide if they can begin working on your idea. If they can start during the next development cycle, they will put the idea on the priority list. Each team at IBM works on a different schedule, where some ideas can be implemented right away, others may be placed on a different schedule.

Receive notification on the decision

Some ideas can be implemented at IBM, while others may not fit within the development plans for the product. In either case, the team will let you know as soon as possible. In some cases, we may be able to find alternatives for ideas which cannot be implemented in a reasonable time.

Additional Information

To view our roadmaps: http://ibm.biz/Data-and-AI-Roadmaps

Reminder: This is not the place to submit defects or support needs, please use normal support channel for these cases

IBM Employees:

The correct URL for entering your ideas is: https://hybridcloudunit-internal.ideas.aha.io


Status Future consideration
Workspace Informix
Created by Guest
Created on Apr 27, 2021

CSDK support for static links under the latest GCC releases

Currently the only way to produce a statically linked utility using ESQL/C is to compile and link with a GCC release earlier than 5.5. The latest is v10. Messages look like this:
art@Elbereth:~/GoogleDrive/Latest$ esql -static -o dbstruct dbstruct.ec getopt.c
/usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfapi.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfutil.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(driver.o): relocation R_X86_64_32 against symbol `_ixctype' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(pipe.o): relocation R_X86_64_32 against `.text' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(shm_fe.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
/usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(shmseg.o): relocation R_X86_64_32 against `.bss' can not be used when making a PIE object; recompile with -fPIE
... MORE OF THE SAME

Needed by Date Apr 27, 2021
  • Guest
    Mar 4, 2022

    OK, I've found a workaround. Add '--static' to the STATICFLAGS variable at the top of the esql script in $INFORMIXDIR/bin and it will compile with gcc versions after v7. Note that you will get a warning about the executable still requiring certain system shared libraries of the same (or compatible?) GCC release, but it will create a working fully static executable! Still, this needs work.

  • Guest
    Mar 4, 2022

    Dectoint.ec is just too simple to pull in the problematic libs. Yes, I can link that one also, but try something more complex and BOOM! Witness:

    informix@Elbereth:/opt/informix/infmx/demo/esqlc$ esql -static dectoint.ec -o dect
    dectoint.ec:28:1:warning: return type defaults to ‘int’ [-Wimplicit-int]
    28 | main()
    | ^~~~
    informix@Elbereth:/opt/informix/infmx/demo/esqlc$
    informix@Elbereth:/opt/informix/infmx/demo/esqlc$ dir ./dectoint
    ls: cannot access './dectoint': No such file or directory
    informix@Elbereth:/opt/informix/infmx/demo/esqlc$ dir ./dect
    -rwxrwxr-x 1 informix informix 696160 Mar 4 11:20 ./dect*
    informix@Elbereth:/opt/informix/infmx/demo/esqlc$ ldd dect
    linux-vdso.so.1 (0x00007fff4e50b000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f46b9aa0000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f46b9951000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f46b994b000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f46b9759000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f46b9b88000)
    informix@Elbereth:/opt/informix/infmx/demo/esqlc$ exit
    art@Elbereth:/opt/informix/infmx/demo/esqlc$ pop
    /opt/informix/infmx ~/GoogleDrive/Latest ~
    art@Elbereth:/opt/informix/infmx$ pop
    ~/GoogleDrive/Latest ~
    art@Elbereth:~/GoogleDrive/Latest$ esql -static -o dbstruct dbstruct.ec getopt.c
    dbstruct.ec: In function ‘typename_f’:
    dbstruct.ec:1321:29:warning: %d’ directive writing between 1 and 11 bytes into a region of size between 0 and 9 [-Wformat-overflow=]
    1321 | sprintf( part2, "%s(%d)", dtparts[pt2], fr2 );
    | ^~~~~~~~
    dbstruct.ec:1321:13:note: sprintf’ output between 4 and 23 bytes into a destination of size 10
    1321 | sprintf( part2, "%s(%d)", dtparts[pt2], fr2 );
    | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfapi.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfutil.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(driver.o): relocation R_X86_64_32 against symbol `_ixctype' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(pipe.o): relocation R_X86_64_32 against `.text' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(shm_fe.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(shmseg.o): relocation R_X86_64_32 against `.bss' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(soctcp.o): relocation R_X86_64_32 against `.text' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(tcp.o): relocation R_X86_64_32 against symbol `_ixctype' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(unxdmn.o): relocation R_X86_64_32 against `.text' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(unxsoc.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(util_fe.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(al.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfinit.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfutil2.o): relocation R_X86_64_32 against symbol `_ixctype' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(cm.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfns.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfpfsqi.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfpfutl.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfslsqi.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(tl.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(asfcss.o): relocation R_X86_64_32S against symbol `asf_css_send' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(neterrf.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(sockets.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(socssl.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(tprotsw.o): relocation R_X86_64_32S against `.data' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(css.o): relocation R_X86_64_32 against symbol `css_cascade_input' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(isi_api.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(isi_common.o): relocation R_X86_64_32 against `.rodata' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(csmdescr.o): relocation R_X86_64_32S against symbol `_ix2lowmap' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(csserr.o): relocation R_X86_64_32S against `.rodata' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(cssio.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    /usr/bin/ld: /opt/informix/infmx/lib/libifasf.a(cssldlib.o): relocation R_X86_64_32 against `.rodata.str1.1' can not be used when making a PIE object; recompile with -fPIE
    collect2: error: ld returned 1 exit status

    Now with a earlier GCC release:

    art@Elbereth:~/GoogleDrive/Latest$ gcc-5 -v
    Using built-in specs.
    COLLECT_GCC=gcc-5
    COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-linux-gnu/5/lto-wrapper
    Target: x86_64-linux-gnu
    Configured with: ../src/configure -v --with-pkgversion='Ubuntu 5.3.1-14ubuntu2' --with-bugurl=file:///usr/share/doc/gcc-5/README.Bugs --enable-languages=c,ada,c++,java,go,d,fortran,objc,obj-c
    ++ --prefix=/usr --program-suffix=-5 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --libdir=/usr/lib --enable-nls --with-sys
    root=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --with-default-libstdcxx-abi=new --enable-gnu-unique-object --disable-vtable-verify --enable-libmpx --enable-p
    lugin --with-system-zlib --disable-browser-plugin --enable-java-awt=gtk --enable-gtk-cairo --with-java-home=/usr/lib/jvm/java-1.5.0-gcj-5-amd64/jre --enable-java-home --with-jvm-root-dir=/usr
    /lib/jvm/java-1.5.0-gcj-5-amd64 --with-jvm-jar-dir=/usr/lib/jvm-exports/java-1.5.0-gcj-5-amd64 --with-arch-directory=amd64 --with-ecj-jar=/usr/share/java/eclipse-ecj.jar --enable-objc-gc --en
    able-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64,mx32 --enable-multilib --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu -
    -host=x86_64-linux-gnu --target=x86_64-linux-gnu
    Thread model: posix
    gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2)

    art@Elbereth:~/GoogleDrive/Latest$ INFORMIXC=gcc-5 esql -static -O -DHAVE_GNU_GETOPT=1 -DHAVE_GETOPT_H=1 -o dbstruct dbstruct.ec -L/usr/lib
    art@Elbereth:~/GoogleDrive/Latest$

    art@Elbereth:~/GoogleDrive/Latest$ ./dbstruct
    Usage:
    dbstruct [-F|G|D|e|f|l] [-h host] -d database [-t table] [filename]
    dbstruct -M [-F|G|D|e|f|l] [-h host] -d database [-t table] [extension]
    dbstruct -V
    -V - Display revision and copyright and exit.
    -F - generate FORTRAN STRUCTURES rather than "C".
    -G - generate 4GL RECORDs rather than "C".
    -e - generate ESQL-C style include file.
    -f - generate 'fixchar' type for strings in ESQL headers rather than
    'string' type. Implies -e.
    -D - generate simple SQL DDL for the tables.
    ...

  • Guest
    Sep 1, 2021

    Issue is not reproducible .

    1. Tried with CSDK 4.50.FC5 and latest version CSDK 4.50.FC7 with gcc 8.2.1 version

    # esql -version

    Program Name: esqlc

    Build Version: 4.50.FC5

    Build Number: N216

    Build OS: Linux 3.10.0-693.el7.x86_64

    Build Date: Mon Nov 30 15:37:42 CST 2020

    GLS Version: glslib-7.00.FC4

    # gcc --version

    gcc (GCC) 8.2.1 20180905 (Red Hat 8.2.1-3)

    Copyright (C) 2018 Free Software Foundation, Inc.

    This is free software; see the source for copying conditions. There is NO

    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

    # esql -static dectoint.ec -o dect

    # ls -lrt dect

    -rwxr-xr-x. 1 root root 666440 Sep 1 06:02 dect

    # esql dectoint.ec -o dect1

    # ls -lrt dect1

    -rwxr-xr-x. 1 root root 15608 Sep 1 06:03 dect1




  • Guest
    Apr 27, 2021

    This was executed with CSDK version:

    $ esql -V
    IBM Informix CSDK Version 4.50, IBM Informix-ESQL Version 4.50.FC5