[krbdev.mit.edu #9114] Build fails with LTO

Greg Hudson via RT rt-comment at kerborg-prod-app-1.mit.edu
Tue Mar 5 15:31:17 EST 2024


Tue Mar 05 15:31:17 2024: Request 9114 was acted upon.
 Transaction: Ticket created by ghudson at mit.edu
       Queue: krb5
     Subject: Build fails with LTO
       Owner: Nobody
  Requestors: eschwartz93 at gmail.com
      Status: new
 Ticket <URL: http://kerborg-prod-app-1.mit.edu/rt/Ticket/Display.html?id=9114 >



I did this:

CFLAGS="-flto=4 -Werror=odr -Werror=lto-type-mismatch
-Werror=strict-aliasing"
CXXFLAGS="-flto=4 -Werror=odr -Werror=lto-type-mismatch
-Werror=strict-aliasing"
LDFLAGS="-flto=4 -Werror=odr -Werror=lto-type-mismatch
-Werror=strict-aliasing"


I got this compile error:

```
+ x86_64-pc-linux-gnu-gcc -shared -fPIC -Wl,-h,libkrb5.so.3
-Wl,--no-undefined -o libkrb5.so.3.3 krb5_libinit.so
error_tables/asn1_err.so error_tables/kdb5_err.so
error_tables/krb5_err.so error_tables/k5e1_err.so
error_tables/kv5m_err.so error_tables/krb524_err.so asn.1/asn1_encode.so
asn.1/asn1_k_encode.so asn.1/ldap_key_seq.so ccache/ccapi_util.so
ccache/ccbase.so ccache/cccopy.so ccache/cccursor.so ccache/ccdefault.so
ccache/ccdefops.so ccache/ccmarshal.so ccache/ccselect.so
ccache/ccselect_hostname.so ccache/ccselect_k5identity.so
ccache/ccselect_realm.so ccache/cc_api_macos.so ccache/cc_dir.so
ccache/cc_retr.so ccache/cc_file.so ccache/cc_kcm.so ccache/cc_memory.so
ccache/cc_keyring.so ccache/ccfns.so keytab/ktadd.so keytab/ktbase.so
keytab/ktdefault.so keytab/ktfr_entry.so keytab/ktremove.so
keytab/ktfns.so keytab/kt_file.so keytab/kt_memory.so
keytab/read_servi.so krb/addr_comp.so krb/addr_order.so krb/addr_srch.so
krb/allow_weak.so krb/appdefault.so krb/ai_authdata.so krb/auth_con.so
krb/cammac_util.so krb/authdata.so krb/authdata_exp.so
krb/authdata_enc.so krb/authdata_dec.so krb/bld_pr_ext.so
krb/bld_princ.so krb/chk_trans.so krb/chpw.so krb/conv_creds.so
krb/conv_princ.so krb/copy_addrs.so krb/copy_auth.so krb/copy_athctr.so
krb/copy_cksum.so krb/copy_creds.so krb/copy_data.so krb/copy_key.so
krb/copy_princ.so krb/copy_tick.so krb/cp_key_cnt.so krb/decode_kdc.so
krb/decrypt_tk.so krb/deltat.so krb/enc_helper.so krb/enc_keyhelper.so
krb/encode_kdc.so krb/encrypt_tk.so krb/etype_list.so krb/fast.so
krb/fwd_tgt.so krb/gc_via_tkt.so krb/gen_seqnum.so krb/gen_subkey.so
krb/gen_save_subkey.so krb/get_creds.so krb/get_etype_info.so
krb/get_in_tkt.so krb/gic_keytab.so krb/gic_opt.so krb/gic_pwd.so
krb/in_tkt_sky.so krb/init_ctx.so krb/copy_ctx.so krb/init_keyblock.so
krb/kdc_rep_dc.so krb/kerrs.so krb/kfree.so krb/libdef_parse.so
krb/mk_cred.so krb/mk_error.so krb/mk_priv.so krb/mk_rep.so
krb/mk_req.so krb/mk_req_ext.so krb/mk_safe.so krb/pac.so
krb/pac_sign.so krb/padata.so krb/parse.so krb/parse_host_string.so
krb/plugin.so krb/pr_to_salt.so krb/preauth2.so krb/preauth_ec.so
krb/preauth_encts.so krb/preauth_otp.so krb/preauth_pkinit.so
krb/preauth_sam2.so krb/princ_comp.so krb/privsafe.so krb/random_str.so
krb/rd_cred.so krb/rd_error.so krb/rd_priv.so krb/rd_rep.so
krb/rd_req.so krb/rd_req_dec.so krb/rd_safe.so krb/recvauth.so
krb/response_items.so krb/s4u_creds.so krb/sendauth.so krb/send_tgs.so
krb/ser_actx.so krb/ser_adata.so krb/ser_addr.so krb/ser_auth.so
krb/ser_cksum.so krb/ser_ctx.so krb/ser_key.so krb/ser_princ.so
krb/serialize.so krb/set_realm.so krb/sname_match.so krb/srv_dec_tkt.so
krb/srv_rcache.so krb/str_conv.so krb/tgtname.so krb/unparse.so
krb/val_renew.so krb/valid_times.so krb/vfy_increds.so krb/vic_opt.so
krb/walk_rtree.so rcache/memrcache.so rcache/rc_base.so rcache/rc_dfl.so
rcache/rc_file2.so rcache/rc_none.so unicode/ucdata.so unicode/ucstr.so
os/accessor.so os/c_ustime.so os/ccdefname.so os/changepw.so
os/dnsglue.so os/dnssrv.so os/expand_path.so os/full_ipadr.so
os/gen_port.so os/genaddrs.so os/gen_rname.so os/hostaddr.so
os/hostrealm.so os/hostrealm_dns.so os/hostrealm_domain.so
os/hostrealm_profile.so os/hostrealm_registry.so os/init_os_ctx.so
os/krbfileio.so os/ktdefname.so os/mk_faddr.so os/localaddr.so
os/localauth.so os/localauth_an2ln.so os/localauth_k5login.so
os/localauth_names.so os/localauth_rule.so os/locate_kdc.so
os/lock_file.so os/net_read.so os/net_write.so os/port2ip.so
os/prompter.so os/read_msg.so os/read_pwd.so os/realm_dom.so
os/sendto_kdc.so os/sn2princ.so os/thread_safe.so os/timeofday.so
os/toffset.so os/trace.so os/unlck_file.so os/ustime.so os/write_msg.so
../../util/profile/prof_tree.so ../../util/profile/prof_file.so
../../util/profile/prof_parse.so ../../util/profile/prof_get.so
../../util/profile/prof_set.so ../../util/profile/prof_err.so
../../util/profile/prof_init.so -L../../lib -lk5crypto -lcom_err
-lkrb5support -lkeyutils -lresolv -Wl,-O1 -Wl,--as-needed -flto=4
-Werror=odr -Werror=lto-type-mismatch -Werror=strict-aliasing
-Wl,--defsym=__gentoo_check_ldflags__=0 -Wl,--version-script
binutils.versions
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/lib/krb5/krb/ser_ctx.c:33:17:
error: type of ‘profile_ser_internalize’ does not match original
declaration [-Werror=lto-type-mismatch]
   33 | krb5_error_code profile_ser_internalize(krb5_context, profile_t *,
      |                 ^
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:600:11:
note: return value type mismatch
  600 | errcode_t profile_ser_internalize(const char *unused, profile_t
*profilep,
      |           ^
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:600:11:
note: type ‘errcode_t’ should match type ‘krb5_error_code’
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:600:11:
note: ‘profile_ser_internalize’ was previously declared here
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:600:11:
note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/lib/krb5/krb/ser_ctx.c:31:17:
error: type of ‘profile_ser_externalize’ does not match original
declaration [-Werror=lto-type-mismatch]
   31 | krb5_error_code profile_ser_externalize(krb5_context, profile_t,
      |                 ^
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:546:11:
note: return value type mismatch
  546 | errcode_t profile_ser_externalize(const char *unused, profile_t
profile,
      |           ^
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:546:11:
note: type ‘errcode_t’ should match type ‘krb5_error_code’
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:546:11:
note: ‘profile_ser_externalize’ was previously declared here
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:546:11:
note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/lib/krb5/krb/ser_ctx.c:30:17:
error: type of ‘profile_ser_size’ does not match original declaration
[-Werror=lto-type-mismatch]
   30 | krb5_error_code profile_ser_size(krb5_context, profile_t, size_t *);
      |                 ^
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:524:11:
note: return value type mismatch
  524 | errcode_t profile_ser_size(const char *unused, profile_t profile,
      |           ^
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:524:11:
note: type ‘errcode_t’ should match type ‘krb5_error_code’
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:524:11:
note: ‘profile_ser_size’ was previously declared here
/var/tmp/portage/app-crypt/mit-krb5-1.21.2/work/krb5-1.21.2/src/util/profile/prof_init.c:524:11:
note: code may be misoptimized unless ‘-fno-strict-aliasing’ is used
lto1: some warnings being treated as errors
lto-wrapper: fatal error: x86_64-pc-linux-gnu-gcc returned 1 exit status
compilation terminated.
/usr/lib/gcc/x86_64-pc-linux-gnu/13/../../../../x86_64-pc-linux-gnu/bin/ld:
error: lto-wrapper failed
collect2: error: ld returned 1 exit status
make[2]: *** [Makefile:711: libkrb5.so.3.3] Error 1
```


A full build log is attached.




-- Eli Schwartz



More information about the krb5-bugs mailing list