eteran / edb-debugger

edb is a cross-platform AArch32/x86/x86-64 debugger.
GNU General Public License v2.0
2.66k stars 321 forks source link

FreeBSD: error: only virtual member functions can be marked 'override' #831

Open Martinfx opened 1 year ago

Martinfx commented 1 year ago

Hi, i have issue with build on FreeBSD 13.1

FreeBSD clang version 13.0.0 (git@github.com:llvm/llvm-project.git llvmorg-13.0.0-0-gd7b669b3a303) Target: x86_64-unknown-freebsd13.1 Thread model: posix InstalledDir: /usr/bin

edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:41:35: error: only virtual member functions can be marked 'override'
        std::size_t pointer_size() const override;
                                         ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:42:27: error: only virtual member functions can be marked 'override'
        size_t page_size() const override;
                                 ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:43:40: error: only virtual member functions can be marked 'override'
        bool has_extension(quint64 ext) const override;
                                              ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:44:59: error: only virtual member functions can be marked 'override'
        std::shared_ptr<IDebugEvent> wait_debug_event(int msecs) override;
                                                                 ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:48:106: error: non-virtual member function marked 'override' hides virtual member function
        Status open(const QString &path, const QString &cwd, const QList<QByteArray> &args, const QString &tty) override;
                                                                                                                ^
edb-debugger/include/IDebugger.h:88:17: note: hidden overloaded virtual function 'IDebugger::open' declared here: different number of parameters (5 vs 4)
        virtual Status open(const QString &path, const QString &cwd, const QList<QByteArray> &args, const QString &input, const QString &output) = 0;
                       ^
In file included from edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/mocs_compilation.cpp:2:
In file included from edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/moc_DebuggerCore.cpp:10:
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:50:66: error: only virtual member functions can be marked 'override'
        void set_ignored_exceptions(const QList<qlonglong> &exceptions) override;
                                                                        ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:58:46: error: only virtual member functions can be marked 'override'
        edb::pid_t parent_pid(edb::pid_t pid) const override;
                                                    ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:61:47: error: only virtual member functions can be marked 'override'
        std::unique_ptr<IState> create_state() const override;
                                                     ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:64:27: error: only virtual member functions can be marked 'override'
        quint64 cpu_type() const override;
                                 ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:67:74: error: only virtual member functions can be marked 'override'
        QMap<edb::pid_t, std::shared_ptr<IProcess>> enumerate_processes() const override;
                                                                                ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:70:32: error: only virtual member functions can be marked 'override'
        QString stack_pointer() const override;
                                      ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:71:32: error: only virtual member functions can be marked 'override'
        QString frame_pointer() const override;
                                      ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:72:38: error: only virtual member functions can be marked 'override'
        QString instruction_pointer() const override;
                                            ^~~~~~~~
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/../../unix/freebsd/DebuggerCore.h:73:32: error: only virtual member functions can be marked 'override'
        QString flag_register() const override;
                                      ^~~~~~~~
In file included from edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/mocs_compilation.cpp:2:
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/moc_DebuggerCore.cpp:123:1: warning: no previous prototype for function 'qt_plugin_query_metadata' [-Wmissing-prototypes]
QT_MOC_EXPORT_PLUGIN(DebuggerCorePlugin::DebuggerCore, DebuggerCore)
^
/usr/local/include/qt5/QtCore/qplugin.h:198:25: note: expanded from macro 'QT_MOC_EXPORT_PLUGIN'
            const char *qt_plugin_query_metadata() \
                        ^
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/moc_DebuggerCore.cpp:123:1: note: declare 'static' if the function is not intended to be used outside of this translation unit
/usr/local/include/qt5/QtCore/qplugin.h:198:19: note: expanded from macro 'QT_MOC_EXPORT_PLUGIN'
            const char *qt_plugin_query_metadata() \
                  ^
In file included from edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/mocs_compilation.cpp:2:
edb-debugger/plugins/DebuggerCore/DebuggerCore_autogen/4DGRYHTLPZ/moc_DebuggerCore.cpp:123:22: error: allocating an object of abstract class type 'DebuggerCorePlugin::DebuggerCore'
QT_MOC_EXPORT_PLUGIN(DebuggerCorePlugin::DebuggerCore, DebuggerCore)
                     ^
edb-debugger/include/IDebugger.h:63:22: note: unimplemented pure virtual method 'pageSize' in 'DebuggerCore'
        virtual std::size_t pageSize() const                  = 0;
                            ^
edb-debugger/include/IDebugger.h:64:22: note: unimplemented pure virtual method 'pointerSize' in 'DebuggerCore'
        virtual std::size_t pointerSize() const               = 0;
                            ^
edb-debugger/include/IDebugger.h:65:19: note: unimplemented pure virtual method 'cpuType' in 'DebuggerCore'
        virtual uint64_t cpuType() const                      = 0;
                         ^
edb-debugger/include/IDebugger.h:66:18: note: unimplemented pure virtual method 'cpuMode' in 'DebuggerCore'
        virtual CpuMode cpuMode() const                       = 0;
                        ^
edb-debugger/include/IDebugger.h:67:15: note: unimplemented pure virtual method 'hasExtension' in 'DebuggerCore'
        virtual bool hasExtension(uint64_t ext) const         = 0;
                     ^
edb-debugger/include/IDebugger.h:71:18: note: unimplemented pure virtual method 'nopFillByte' in 'DebuggerCore'
        virtual uint8_t nopFillByte() const                   = 0;
                        ^
edb-debugger/include/IDebugger.h:75:18: note: unimplemented pure virtual method 'stackPointer' in 'DebuggerCore'
        virtual QString stackPointer() const       = 0;
                        ^
edb-debugger/include/IDebugger.h:76:18: note: unimplemented pure virtual method 'framePointer' in 'DebuggerCore'
        virtual QString framePointer() const       = 0;
                        ^
edb-debugger/include/IDebugger.h:77:18: note: unimplemented pure virtual method 'instructionPointer' in 'DebuggerCore'
        virtual QString instructionPointer() const = 0;
                        ^
edb-debugger/include/IDebugger.h:78:18: note: unimplemented pure virtual method 'flagRegister' in 'DebuggerCore'
        virtual QString flagRegister() const       = 0;
                        ^
edb-debugger/include/IDebugger.h:82:21: note: unimplemented pure virtual method 'parentPid' in 'DebuggerCore'
        virtual edb::pid_t parentPid(edb::pid_t pid) const                             = 0;
                           ^
edb-debugger/include/IDebugger.h:83:54: note: unimplemented pure virtual method 'enumerateProcesses' in 'DebuggerCore'
        virtual QMap<edb::pid_t, std::shared_ptr<IProcess>> enumerateProcesses() const = 0;
                                                            ^
edb-debugger/include/IDebugger.h:88:17: note: unimplemented pure virtual method 'open' in 'DebuggerCore'
        virtual Status open(const QString &path, const QString &cwd, const QList<QByteArray> &args, const QString &input, const QString &output) = 0;
                       ^
edb-debugger/include/IDebugger.h:89:39: note: unimplemented pure virtual method 'waitDebugEvent' in 'DebuggerCore'
        virtual std::shared_ptr<IDebugEvent> waitDebugEvent(std::chrono::milliseconds msecs)                                                     = 0;
                                             ^
edb-debugger/include/IDebugger.h:106:15: note: unimplemented pure virtual method 'setIgnoredExceptions' in 'DebuggerCore'
        virtual void setIgnoredExceptions(const QList<qlonglong> &exceptions) = 0;
                     ^
edb-debugger/include/IDebugger.h:109:34: note: unimplemented pure virtual method 'createState' in 'DebuggerCore'
        virtual std::unique_ptr<IState> createState() const = 0;
eteran commented 1 year ago

Unfortunately, the non-linux ports are wofully out of date from the rest of the code base and currently have no expectation of compiling.

I do plan to eventually get non-linux ports working again, but it just hasn't been a priority in a bit. But perhaps you've motivated me to spin up a FreeBSD VM again and see what we can do ;-)

Martinfx commented 1 year ago

good idea, i can help with test

arrowd commented 1 year ago

I took a quick look on the FreeBSD plugin and it is extremely out of sync with the rest of the code base. Would you accept a PR that at least makes the plugin compile by stubbing out actual implementations?

eteran commented 1 year ago

Absolutely! any help on this front is welcome :-)