Skip to content

gopass must remove syscall(2) usage on OpenBSD #2683

@jrick

Description

@jrick

Summary

gopass built for OpenBSD from the master branch will fail to link to syscall(2) at runtime once OpenBSD removes syscall(2) from libc.

There are two usages of syscall(2) that I could find: one is due to pledge (will be fixed by https://golang.org/cl/468095), and the other is in readline, which I've opened a PR for. Unfortunately, it doesn't seem that the owner is maintaining that readline library anymore, and a switch to that other fork might be needed, unless you wish to use a module replacement that points to my PR's branch.

Steps To Reproduce

$ pwd
/home/jrick/src/gopass
$ go build
$ ./gopass
gopass:./gopass: undefined symbol 'syscall'
ld.so: gopass: lazy binding failed!
Killed 

Expected behavior

gopass executes without hitting a lazy linking error.

Environment

  • OS: OpenBSD
  • OS version: -current with the full syscall(2) removal patch, including removal from libc
  • gopass Version: master branch
  • Installation method: repo

Additional context

A working gopass can be built with patches to x/sys and readline.

$ pwd
/home/jrick/src/gopass
$ got br
master
$ got status
$ go work init
$ go work use .
$ go work use ../sys # golang.org/cl/468095
$ go work use ../readline # github.com/chzyer/readline/pull/232
$ go build
$ ./gopass

   __     _    _ _      _ _   ___   ___
 /'_ '\ /'_'\ ( '_'\  /'_' )/',__)/',__)
( (_) |( (_) )| (_) )( (_| |\__, \\__, \
'\__  |'\___/'| ,__/''\__,_)(____/(____/
( )_) |       | |
 \___/'       (_)

� Welcome to gopass!
â�  This is the built-in shell. Type 'help' for a list of commands.
gopass> ^D

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions