There are at least two binary blobs buried in the source:
pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a
pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.so
It looks like this is mostly code for accessing registers in the tofino and serdes:
nils:~/dev/tofino-sde$ nm ./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a | grep pkgsrc
[...]
./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a[bf_ll_eth100g_reg_rspec_if.c.o]:
./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a[bf_ll_eth400g_mac_rspec_if.c.o]:
./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a[bf_ll_eth400g_pcs_rspec_if.c.o]:
./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a[port_mgr_tof2_umac.c.o]:
./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a[port_mgr_tof2_umac3.c.o]:
./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a[port_mgr_tof2_umac4.c.o]:
./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.a[credo_sd_access.c.o]:
I can imagine that the credo file contains source that Intel can't distribute, but I don't know why the intel/barefoot code isn't available.
This is a standard ELF library, but seems to be mostly self-contained:
nils@atrium:~/dev/tofino-sde$ nm ./pkgsrc/bf-drivers/src/port_mgr/port_mgr_lib/libport_mgr_hw.so | egrep "UNDEF.*@"
[299932] | 0| 0|FUNC |GLOB |0 |UNDEF |__assert_fail@@GLIBC_2.2.5
[307006] | 0| 0|FUNC |GLOB |0 |UNDEF |__ctype_b_loc@@GLIBC_2.3
[296002] | 0| 0|FUNC |WEAK |0 |UNDEF |__cxa_finalize@@GLIBC_2.2.5
[305312] | 0| 0|FUNC |GLOB |0 |UNDEF |__isoc99_sscanf@@GLIBC_2.7
[307501] | 0| 0|FUNC |GLOB |0 |UNDEF |__stack_chk_fail@@GLIBC_2.4
[314788] | 0| 0|FUNC |GLOB |0 |UNDEF |atoi@@GLIBC_2.2.5
[313548] | 0| 0|FUNC |GLOB |0 |UNDEF |backtrace_symbols@@GLIBC_2.2.5
[313440] | 0| 0|FUNC |GLOB |0 |UNDEF |backtrace@@GLIBC_2.2.5
[305551] | 0| 0|FUNC |GLOB |0 |UNDEF |fclose@@GLIBC_2.2.5
[308593] | 0| 0|FUNC |GLOB |0 |UNDEF |fflush@@GLIBC_2.2.5
[314951] | 0| 0|FUNC |GLOB |0 |UNDEF |fgets@@GLIBC_2.2.5
[308624] | 0| 0|FUNC |GLOB |0 |UNDEF |fopen@@GLIBC_2.2.5
[312873] | 0| 0|FUNC |GLOB |0 |UNDEF |fprintf@@GLIBC_2.2.5
[309710] | 0| 0|FUNC |GLOB |0 |UNDEF |fputc@@GLIBC_2.2.5
[313670] | 0| 0|FUNC |GLOB |0 |UNDEF |fread@@GLIBC_2.2.5
[321161] | 0| 0|FUNC |GLOB |0 |UNDEF |fwrite@@GLIBC_2.2.5
[297444] | 0| 0|FUNC |GLOB |0 |UNDEF |getcwd@@GLIBC_2.2.5
[315901] | 0| 0|FUNC |GLOB |0 |UNDEF |gettimeofday@@GLIBC_2.2.5
[301083] | 0| 0|FUNC |GLOB |0 |UNDEF |localtime@@GLIBC_2.2.5
[297983] | 0| 0|FUNC |GLOB |0 |UNDEF |memset@@GLIBC_2.2.5
[290453] | 0| 0|FUNC |GLOB |0 |UNDEF |printf@@GLIBC_2.2.5
[312251] | 0| 0|FUNC |GLOB |0 |UNDEF |putchar@@GLIBC_2.2.5
[314498] | 0| 0|FUNC |GLOB |0 |UNDEF |puts@@GLIBC_2.2.5
[293406] | 0| 0|FUNC |GLOB |0 |UNDEF |rand@@GLIBC_2.2.5
[315574] | 0| 0|FUNC |GLOB |0 |UNDEF |snprintf@@GLIBC_2.2.5
[290832] | 0| 0|OBJT |GLOB |0 |UNDEF |stdout@@GLIBC_2.2.5
[312278] | 0| 0|FUNC |GLOB |0 |UNDEF |strcmp@@GLIBC_2.2.5
[302415] | 0| 0|FUNC |GLOB |0 |UNDEF |strftime@@GLIBC_2.2.5
[296022] | 0| 0|FUNC |GLOB |0 |UNDEF |strlen@@GLIBC_2.2.5
[300150] | 0| 0|FUNC |GLOB |0 |UNDEF |strncat@@GLIBC_2.2.5
[296474] | 0| 0|FUNC |GLOB |0 |UNDEF |strncmp@@GLIBC_2.2.5
[314857] | 0| 0|FUNC |GLOB |0 |UNDEF |strtok@@GLIBC_2.2.5
[312333] | 0| 0|FUNC |GLOB |0 |UNDEF |strtol@@GLIBC_2.2.5
[294219] | 0| 0|FUNC |GLOB |0 |UNDEF |strtoul@@GLIBC_2.2.5
[310856] | 0| 0|FUNC |GLOB |0 |UNDEF |strtoull@@GLIBC_2.2.5
[299502] | 0| 0|FUNC |GLOB |0 |UNDEF |vsnprintf@@GLIBC_2.2.5
Hopefully I can fashion a compatibility wrapper to get this Linux library to work on illumos. I'm almost certain I could build an illumos-native version of the library from the old closed-source SDE, but I suspect that would be frowned upon.
There are at least two binary blobs buried in the source:
It looks like this is mostly code for accessing registers in the tofino and serdes:
I can imagine that the
credofile contains source that Intel can't distribute, but I don't know why the intel/barefoot code isn't available.This is a standard ELF library, but seems to be mostly self-contained:
Hopefully I can fashion a compatibility wrapper to get this Linux library to work on
illumos. I'm almost certain I could build anillumos-native version of the library from the old closed-source SDE, but I suspect that would be frowned upon.