[lldb-dev] LLDB buildbot state
Deepak Panickal
deepak at codeplay.com
Wed Feb 5 03:02:45 PST 2014
We had run into the same issue with editline.
You can try using this patch to fix the issue with the editline versions.
Thanks,
Deepak
On 05/02/14 05:47, Todd Fiala wrote:
> I just had a look at this build bot:
>
> lldb-x86_64-linux
>
> The latest build I looked at here
> <http://lab.llvm.org:8011/builders/lldb-x86_64-linux/builds/10087>
> appears to be failing because it doesn't have libedit installed. As
> we mentioned above, it will need a newer libedit since we are
> currently using features that don't appear to be in older versions of
> the library and we're not doing anything to distinguish that at the
> moment.
>
>
> On Tue, Feb 4, 2014 at 4:50 PM, Todd Fiala <tfiala at google.com
> <mailto:tfiala at google.com>> wrote:
>
> > configure ../llvm --enable-cxx11
> --with-extra-option=-I$LIBEDIT_PATH/include
> --with-extra-ld-options=-L$
>
> That should be:
>
> ../llvm/configure --enable-cxx11
> --with-extra-option=-I$LIBEDIT_PATH/include
> --with-extra-ld-options=-L$LIBEDIT_PATH/lib
> --prefix=<some_install_path>
>
>
> On Tue, Feb 4, 2014 at 4:49 PM, Todd Fiala <tfiala at google.com
> <mailto:tfiala at google.com>> wrote:
>
> We've been using a configure-built libedit from here
> <http://thrysoee.dk/editline/>. We essentially build that
> with something like "configure
> --prefix=/usr/local/libedit/libedit-20130712-3.1
> <tel:20130712-3.1> && make && sudo make install".
>
> We then run configure something like this:
>
> export LIBEDIT_PATH=/usr/local/libedit/libedit-20130712-3.1
> <tel:20130712-3.1>
> export
> LD_LIBRARY_PATH=<some_paths_to_gcc_4.8.2/lib64>:$LIBEDIT_PATH/lib:$LD_LIBRARY_PATH
>
> # assume ../llvm is the source tree: i.e. we're in a build
> directory that parallels the source tree
> configure ../llvm --enable-cxx11
> --with-extra-option=-I$LIBEDIT_PATH/include
> --with-extra-ld-options=-L$LIBEDIT_PATH/lib
> --prefix=<some_install_path>
>
> That's what we're doing now. We could consider breaking out
> the libedit parts to the 2008-libedit spec and adding
> configure/cmake checks for it. That might be a nice smallish
> project for somebody to knock out.
>
>
>
> On Tue, Feb 4, 2014 at 4:21 PM, Adam Strzelecki <ono at java.pl
> <mailto:ono at java.pl>> wrote:
>
> > I've not been looking at the linux one. However, I am
> in the process of fixing something in llvm that is broken
> due to unexpected interactions between libedit, libbsd and
> <bsd/stdlib.h> on Ubuntu (and probably other linux
> variants that might implement libedit in terms of libbsd).
>
> The problem here is that any Ubuntu < 13.10 (which
> unfortunately includes 12.04 LTS we are using) use libedit
> 2.11-20080614 while latest lldb
> source/Host/common/Editline.cpp relies on libedit 3.1 API
> (available only for 13.10).
>
> I presume that Ubuntu < 13.10 builds should use their own
> libedit 3.1 probably linked statically, but I have
> absolutely no idea how to configure that.
>
> Currently my build here fails:
>
> /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:70:27:
> error: use of undeclared identifier 'EL_PROMPT_ESC'
> ::el_set (m_editline, EL_PROMPT_ESC,
> GetPromptCallback, k_prompt_escape_char);
> ^
> /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:265:31:
> error: cannot initialize a parameter of type 'char *' with
> an rvalue of type 'const char *'
> ::el_push(m_editline, std::string (bytes,
> len).c_str());
> ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/histedit.h:95:34: note: passing argument to
> parameter here
> void el_push(EditLine *, char *);
> ^
> /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:341:52:
> error: cannot initialize a parameter of type 'char *' with
> an rvalue of type 'const char *'
> ::el_push (m_editline,
> lines[line_idx+1].c_str());
> ^~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/histedit.h:95:34: note: passing argument to
> parameter here
> void el_push(EditLine *, char *);
> ^
> /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:357:52:
> error: cannot initialize a parameter of type 'char *' with
> an rvalue of type 'const char *'
> ::el_push (m_editline,
> lines[line_idx-1].c_str());
> ^~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/histedit.h:95:34: note: passing argument to
> parameter here
> void el_push(EditLine *, char *);
> ^
> /home/ono/Projects/llvm/tools/lldb/source/Host/common/Editline.cpp:367:48:
> error: cannot initialize a parameter of type 'char *' with
> an rvalue of type 'const char *'
> ::el_push (m_editline,
> lines[line_idx+1].c_str());
> ^~~~~~~~~~~~~~~~~~~~~~~~~
> /usr/include/histedit.h:95:34: note: passing argument to
> parameter here
> void el_push(EditLine *, char *);
> ^
> 5 errors generated.
>
> Cheers,
> --
> Adam
>
>
>
>
> --
> Todd Fiala | Software Engineer | tfiala at google.com
> <mailto:tfiala at google.com> | 650-943-3180
>
>
>
>
>
> --
> Todd Fiala | Software Engineer | tfiala at google.com
> <mailto:tfiala at google.com> | 650-943-3180
>
>
>
>
>
> --
> Todd Fiala | Software Engineer | tfiala at google.com
> <mailto:tfiala at google.com> | 650-943-3180
>
>
>
>
> _______________________________________________
> lldb-dev mailing list
> lldb-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/lldb-dev
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20140205/4b931328/attachment.html>
-------------- next part --------------
diff --git include/lldb/Host/Editline.h include/lldb/Host/Editline.h
index b92de10..ab7e561 100644
--- include/lldb/Host/Editline.h
+++ include/lldb/Host/Editline.h
@@ -20,6 +20,11 @@
#include <histedit.h>
#endif
+// Fix for missing Editline ver 1.5
+#ifndef EL_PROMPT_ESC
+#define EL_PROMPT_ESC 21
+#endif
+
#include <string>
#include <vector>
diff --git source/Host/common/Editline.cpp source/Host/common/Editline.cpp
index 7e6a2f5..c7c169e 100644
--- source/Host/common/Editline.cpp
+++ source/Host/common/Editline.cpp
@@ -262,7 +262,7 @@ Editline::Push (const char *bytes, size_t len)
{
// Must NULL terminate the string for el_push() so we stick it
// into a std::string first
- ::el_push(m_editline, std::string (bytes, len).c_str());
+ ::el_push(m_editline, (char*)std::string (bytes, len).c_str());
return len;
}
return 0;
@@ -338,7 +338,10 @@ Editline::GetLines(const std::string &end_line, StringList &lines)
// we were editing previous lines, then populate the line
// with the appropriate contents
if (line_idx+1 < lines.GetSize() && !lines[line_idx+1].empty())
- ::el_push (m_editline, lines[line_idx+1].c_str());
+ {
+ std::string &str = lines[line_idx+1];
+ Push(str.c_str(), str.length());
+ }
}
else if (line_status == LineStatus::Error)
{
@@ -354,7 +357,10 @@ Editline::GetLines(const std::string &end_line, StringList &lines)
//::fprintf (out_file, "\033[1A\033[%uD\033[2K", (uint32_t)(m_lines_prompt.size() + lines[line_idx].size())); // Make cursor go up a line and clear that line
::fprintf (out_file, "\033[1A\033[1000D\033[2K");
if (!lines[line_idx-1].empty())
- ::el_push (m_editline, lines[line_idx-1].c_str());
+ {
+ std::string &str = lines[line_idx-1];
+ Push(str.c_str(), str.length());
+ }
--m_lines_curr_line;
}
break;
@@ -364,7 +370,10 @@ Editline::GetLines(const std::string &end_line, StringList &lines)
//::fprintf (out_file, "\033[1B\033[%uD\033[2K", (uint32_t)(m_lines_prompt.size() + lines[line_idx].size()));
::fprintf (out_file, "\033[1B\033[1000D\033[2K");
if (line_idx+1 < lines.GetSize() && !lines[line_idx+1].empty())
- ::el_push (m_editline, lines[line_idx+1].c_str());
+ {
+ std::string &str = lines[line_idx+1];
+ Push(str.c_str(), str.length());
+ }
break;
}
}
More information about the lldb-dev
mailing list