xin201501 commented on issue #415:
URL: 
https://github.com/apache/incubator-teaclave-sgx-sdk/issues/415#issuecomment-1374742943

   Thanks!
   **It compiles when only adding this crate `pgx` as a dependency and not 
using it to write some functions.**(In other words no functions use this 
dependency).
   When using it to write some Enclave functions,**the enclave part of my 
project finishes compiling,but fails to link**:
   ```zsh
       Finished dev [unoptimized + debuginfo] target(s) in 1m 23s
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.9.rcgu.o):
 in function `pgx_pg_sys::submodules::panic::do_ereport':
   
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/panic.rs:368:
 undefined reference to `ErrorContext'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.9.rcgu.o):
 in function `pgx_pg_sys::all_versions::MemoryContextSwitchTo':
   
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/lib.rs:513:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/lib.rs:515:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/lib.rs:513:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/lib.rs:515:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `list_nth_cell':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/nodes/pg_list.h:258:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `list_nth':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/nodes/pg_list.h:280:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function 
`GetMemoryChunkContext':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/utils/memutils.h:131:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: 
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/utils/memutils.h:124:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: 
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/utils/memutils.h:123:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `pgx_elog':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:38:
 undefined reference to `errstart'
   /usr/bin/ld: 
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:38:
 undefined reference to `errmsg_internal'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `pgx_ereport':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:98:
 undefined reference to `errstart'
   /usr/bin/ld: 
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:99:
 undefined reference to `errcode'
   /usr/bin/ld: 
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:100:
 undefined reference to `errmsg'
   /usr/bin/ld: 
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:102:
 undefined reference to `errdetail'
   /usr/bin/ld: 
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:105:
 undefined reference to `errcontext_msg'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `fastgetattr':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/access/htup_details.h:761:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `list_nth_cell':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/nodes/pg_list.h:259:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: 
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/nodes/pg_list.h:259:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: 
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/nodes/pg_list.h:259:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `list_nth_int':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/nodes/pg_list.h:291:
 undefined reference to `ExceptionalCondition'
   /usr/bin/ld: 
./lib/libenclave.a(pgx-cshim.o):/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/nodes/pg_list.h:259:
 more undefined references to `ExceptionalCondition' follow
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `pgx_elog':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:38:
 undefined reference to `errfinish'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function 
`pgx_errcontext_msg':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:48:
 undefined reference to `errcontext_msg'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `pgx_ereport':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:107:
 undefined reference to `errfinish'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `heap_getattr':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/access/htup_details.h:798:
 undefined reference to `getmissingattr'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `fastgetattr':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/access/htup_details.h:764:
 undefined reference to `nocachegetattr'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `heap_getattr':
   
/home/xin201501/.pgx/15.1/pgx-install/include/postgresql/server/access/htup_details.h:803:
 undefined reference to `heap_getsysattr'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function `pgx_ARR_NELEMS':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:201:
 undefined reference to `ArrayGetNItems'
   /usr/bin/ld: ./lib/libenclave.a(pgx-cshim.o): in function 
`pgx_SpinLockAcquire':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/cshim/pgx-cshim.c:231:
 undefined reference to `s_lock'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.15.rcgu.o):
 in function `pgx_pg_sys::submodules::thread_check::init_active_thread':
   
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/thread_check.rs:41:
 undefined reference to `pthread_atfork'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::submodules::ffi::pg_guard_ffi_boundary_impl':
   
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:72:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:73:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:74:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:76:
 undefined reference to `__sigsetjmp'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:80:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:100:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:129:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:130:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:86:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:87:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::pg15::CopyErrorData::{{closure}}':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/pg15.rs:13399:
 undefined reference to `CopyErrorData'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::submodules::ffi::pg_guard_ffi_boundary_impl':
   
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:72:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:73:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:74:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:76:
 undefined reference to `__sigsetjmp'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:80:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:100:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:129:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:130:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:86:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:87:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::pg15::FreeErrorData::{{closure}}':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/pg15.rs:13408:
 undefined reference to `FreeErrorData'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::submodules::ffi::pg_guard_ffi_boundary_impl':
   
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:72:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:73:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:74:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:76:
 undefined reference to `__sigsetjmp'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:80:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:100:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:129:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:130:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:86:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:87:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::pg15::palloc0::{{closure}}':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/pg15.rs:13716:
 undefined reference to `palloc0'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::submodules::ffi::pg_guard_ffi_boundary_impl':
   
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:72:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:73:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:74:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:76:
 undefined reference to `__sigsetjmp'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:80:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:100:
 undefined reference to `CurrentMemoryContext'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:129:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:130:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:86:
 undefined reference to `PG_exception_stack'
   /usr/bin/ld: 
/home/xin201501/.cargo/registry/src/github.com-1ecc6299db9ec823/pgx-pg-sys-0.6.1/src/submodules/ffi.rs:87:
 undefined reference to `error_context_stack'
   /usr/bin/ld: 
./lib/libenclave.a(pgx_pg_sys-fc533ebe75dea904.pgx_pg_sys.646afbca-cgu.3.rcgu.o):
 in function `pgx_pg_sys::pg15::pfree::{{closure}}':
   
/home/xin201501/incubator-teaclave-sgx-sdk/samplecode/template/enclave/target/x86_64-unknown-linux-sgx/debug/build/pgx-pg-sys-451c5dc41c4634b5/out/pg15.rs:13755:
 undefined reference to `pfree'
   collect2: error: ld returned 1 exit status
   make: *** [Makefile:160:bin/enclave.so] 错误 1
   ```
   ---
   Many `undefined references` are used by `pg_sys` crate,an underlying crate 
which has many `FFI Calls` to communicate with underlying database.
   I found that this `pg_sys` crate uses its own `CFLAGS` to compile some C 
code.Perhaps they are not compatible with enclave environment.
   These C functions are indeed hard to deal with.We almost have no control of 
them...


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: notifications-unsubscr...@teaclave.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscr...@teaclave.apache.org
For additional commands, e-mail: notifications-h...@teaclave.apache.org

Reply via email to